package pe.gob.osce.sirenas.model.jpa;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaCapacitacion;
import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaDocencia;
import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaEspecialidad;
import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaExpLaboral;
import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaFormacion;
import pe.gob.osce.sirenas.model.jpa.fiscalizacion.FiscalizaTrayecArbitral;

@Entity
@Table(name="TBL_ADM_FISCALIZACION", schema="RNAS" )
@SequenceGenerator(name = "SQ_ID_FISCALIZACION", sequenceName = "RNAS.SQ_ID_FISCALIZACION", allocationSize=1)
public class Fiscalizacion implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 5160297651066328091L;
	
	
	@Id 
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SQ_ID_FISCALIZACION")	
	@Column(name="N_ID_FISCALIZACION")
	private Long idFiscalizacion;		
	@Column(name="N_ID_FICHA")
	private Long idFicha;	
	@Column(name="C_COD_BLOQUE")
	private String codigoBloque;		
	@Column(name="C_TIP_RESULTADO")
	private String tipoResultado;	
	@Column(name="C_DES_RESUMEN")
	private String resumen;	
	@Column(name="C_NOM_DOCUMENTO_PDF")
	private String documentoPDF;	
	@Column(name="C_NUM_DOCUMENTO")
	private String numDocumento;	
	@Column(name="C_DES_EXP_FISCALIZACION")
	private String expFiscalizacion;	
	@Column(name="N_ID_ESTADO_PROCESO")
	private Long idEstadoProceso;	
	@Column(name="D_FEC_INICIO")
	private Date fecInicio;	
	@Column(name="C_COD_USUARIO_INICIO")
	private String usuarioInicio;	
	@Column(name="D_FEC_CIERRE")
	private Date fecCierre;	
	@Column(name="C_COD_USUARIO_CIERRE")
	private String usuarioCierre;	
	@Column(name="N_IND_ESTADO")
	private Long estado;
	
	@Embedded
	private Auditoria auditoria;

	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="N_ID_FICHA", insertable=false, updatable=false)
	private FichaArbitral	fichaArbitral;

	
	

	@OneToMany(mappedBy = "fiscalizacion")
    private List<FiscalizaDocencia> listaFiscalizaDocencia;

	@OneToMany(mappedBy = "fiscalizacion")
    private List<FiscalizaEspecialidad> listaFiscalizaEspecialidad;

	@OneToMany(mappedBy = "fiscalizacion")
    private List<FiscalizaExpLaboral> listaFiscalizaExpLaboral;

	@OneToMany(mappedBy = "fiscalizacion")
    private List<FiscalizaFormacion> listaFiscalizaFormacion;

	@OneToMany(mappedBy = "fiscalizacion")
    private List<FiscalizaTrayecArbitral> listaFiscalizaTrayecArbitral;

	@OneToMany(mappedBy = "fiscalizacion")
    private List<FiscalizaCapacitacion> listaFiscalizaCapacitacion;
	
	/**
	 * Metodo que permite obtener idFiscalizacion.
	 * @return idFiscalizacion , tipo Long.
	 */
	public Long getIdFiscalizacion() {
		return idFiscalizacion;
	}

	/**
	 * Permite actualizar idFiscalizacion.
	 * @param idFiscalizacion, tipo Long.
	 */
	public void setIdFiscalizacion(Long idFiscalizacion) {
		this.idFiscalizacion = idFiscalizacion;
	}

	/**
	 * Metodo que permite obtener codigoBloque.
	 * @return codigoBloque , tipo String.
	 */
	public String getCodigoBloque() {
		return codigoBloque;
	}

	/**
	 * Permite actualizar codigoBloque.
	 * @param codigoBloque, tipo String.
	 */
	public void setCodigoBloque(String codigoBloque) {
		this.codigoBloque = codigoBloque;
	}

	/**
	 * Metodo que permite obtener idFicha.
	 * @return idFicha , tipo Long.
	 */
	public Long getIdFicha() {
		return idFicha;
	}

	/**
	 * Permite actualizar idFicha.
	 * @param idFicha, tipo Long.
	 */
	public void setIdFicha(Long idFicha) {
		this.idFicha = idFicha;
	}

	/**
	 * Metodo que permite obtener tipoResultado.
	 * @return tipoResultado , tipo String.
	 */
	public String getTipoResultado() {
		return tipoResultado;
	}

	/**
	 * Permite actualizar tipoResultado.
	 * @param tipoResultado, tipo String.
	 */
	public void setTipoResultado(String tipoResultado) {
		this.tipoResultado = tipoResultado;
	}


	/**
	 * Metodo que permite obtener resumen.
	 * @return resumen , tipo String.
	 */
	public String getResumen() {
		return resumen;
	}

	/**
	 * Permite actualizar resumen.
	 * @param resumen, tipo String.
	 */
	public void setResumen(String resumen) {
		this.resumen = resumen;
	}

	/**
	 * Metodo que permite obtener documentoPDF.
	 * @return documentoPDF , tipo String.
	 */
	public String getDocumentoPDF() {
		return documentoPDF;
	}

	/**
	 * Permite actualizar documentoPDF.
	 * @param documentoPDF, tipo String.
	 */
	public void setDocumentoPDF(String documentoPDF) {
		this.documentoPDF = documentoPDF;
	}

	/**
	 * Metodo que permite obtener numDocumento.
	 * @return numDocumento , tipo String.
	 */
	public String getNumDocumento() {
		return numDocumento;
	}

	/**
	 * Permite actualizar numDocumento.
	 * @param numDocumento, tipo String.
	 */
	public void setNumDocumento(String numDocumento) {
		this.numDocumento = numDocumento;
	}

	/**
	 * Metodo que permite obtener expFiscalizacion.
	 * @return expFiscalizacion , tipo String.
	 */
	public String getExpFiscalizacion() {
		return expFiscalizacion;
	}

	/**
	 * Permite actualizar expFiscalizacion.
	 * @param expFiscalizacion, tipo String.
	 */
	public void setExpFiscalizacion(String expFiscalizacion) {
		this.expFiscalizacion = expFiscalizacion;
	}

	/**
	 * Metodo que permite obtener idEstadoProceso.
	 * @return idEstadoProceso , tipo Long.
	 */
	public Long getIdEstadoProceso() {
		return idEstadoProceso;
	}

	/**
	 * Permite actualizar idEstadoProceso.
	 * @param idEstadoProceso, tipo Long.
	 */
	public void setIdEstadoProceso(Long idEstadoProceso) {
		this.idEstadoProceso = idEstadoProceso;
	}

	/**
	 * Metodo que permite obtener fecInicio.
	 * @return fecInicio , tipo Date.
	 */
	public Date getFecInicio() {
		return fecInicio;
	}

	/**
	 * Permite actualizar fecInicio.
	 * @param fecInicio, tipo Date.
	 */
	public void setFecInicio(Date fecInicio) {
		this.fecInicio = fecInicio;
	}

	/**
	 * Metodo que permite obtener usuarioInicio.
	 * @return usuarioInicio , tipo String.
	 */
	public String getUsuarioInicio() {
		return usuarioInicio;
	}

	/**
	 * Permite actualizar usuarioInicio.
	 * @param usuarioInicio, tipo String.
	 */
	public void setUsuarioInicio(String usuarioInicio) {
		this.usuarioInicio = usuarioInicio;
	}

	/**
	 * Metodo que permite obtener fecCierre.
	 * @return fecCierre , tipo Date.
	 */
	public Date getFecCierre() {
		return fecCierre;
	}

	/**
	 * Permite actualizar fecCierre.
	 * @param fecCierre, tipo Date.
	 */
	public void setFecCierre(Date fecCierre) {
		this.fecCierre = fecCierre;
	}

	/**
	 * Metodo que permite obtener usuarioCierre.
	 * @return usuarioCierre , tipo String.
	 */
	public String getUsuarioCierre() {
		return usuarioCierre;
	}

	/**
	 * Permite actualizar usuarioCierre.
	 * @param usuarioCierre, tipo String.
	 */
	public void setUsuarioCierre(String usuarioCierre) {
		this.usuarioCierre = usuarioCierre;
	}

	/**
	 * Metodo que permite obtener estado.
	 * @return estado , tipo Long.
	 */
	public Long getEstado() {
		return estado;
	}

	/**
	 * Permite actualizar estado.
	 * @param estado, tipo Long.
	 */
	public void setEstado(Long estado) {
		this.estado = estado;
	}

	/**
	 * Metodo que permite obtener auditoria.
	 * @return auditoria , tipo Auditoria.
	 */
	public Auditoria getAuditoria() {
		return auditoria;
	}

	/**
	 * Permite actualizar auditoria.
	 * @param auditoria, tipo Auditoria.
	 */
	public void setAuditoria(Auditoria auditoria) {
		this.auditoria = auditoria;
	}

	/**
	 * Metodo que permite obtener fichaArbitral.
	 * @return fichaArbitral , tipo FichaArbitral.
	 */
	public FichaArbitral getFichaArbitral() {
		return fichaArbitral;
	}

	/**
	 * Permite actualizar fichaArbitral.
	 * @param fichaArbitral, tipo FichaArbitral.
	 */
	public void setFichaArbitral(FichaArbitral fichaArbitral) {
		this.fichaArbitral = fichaArbitral;
	}

	/**
	 * Metodo que permite obtener listaFiscalizaDocencia.
	 * @return listaFiscalizaDocencia , tipo List<FiscalizaDocencia>.
	 */
	public List<FiscalizaDocencia> getListaFiscalizaDocencia() {
		return listaFiscalizaDocencia;
	}

	/**
	 * Permite actualizar listaFiscalizaDocencia.
	 * @param listaFiscalizaDocencia, tipo List<FiscalizaDocencia>.
	 */
	public void setListaFiscalizaDocencia(
			List<FiscalizaDocencia> listaFiscalizaDocencia) {
		this.listaFiscalizaDocencia = listaFiscalizaDocencia;
	}

	/**
	 * Metodo que permite obtener listaFiscalizaEspecialidad.
	 * @return listaFiscalizaEspecialidad , tipo List<FiscalizaEspecialidad>.
	 */
	public List<FiscalizaEspecialidad> getListaFiscalizaEspecialidad() {
		return listaFiscalizaEspecialidad;
	}

	/**
	 * Permite actualizar listaFiscalizaEspecialidad.
	 * @param listaFiscalizaEspecialidad, tipo List<FiscalizaEspecialidad>.
	 */
	public void setListaFiscalizaEspecialidad(
			List<FiscalizaEspecialidad> listaFiscalizaEspecialidad) {
		this.listaFiscalizaEspecialidad = listaFiscalizaEspecialidad;
	}

	/**
	 * Metodo que permite obtener listaFiscalizaExpLaboral.
	 * @return listaFiscalizaExpLaboral , tipo List<FiscalizaExpLaboral>.
	 */
	public List<FiscalizaExpLaboral> getListaFiscalizaExpLaboral() {
		return listaFiscalizaExpLaboral;
	}

	/**
	 * Permite actualizar listaFiscalizaExpLaboral.
	 * @param listaFiscalizaExpLaboral, tipo List<FiscalizaExpLaboral>.
	 */
	public void setListaFiscalizaExpLaboral(
			List<FiscalizaExpLaboral> listaFiscalizaExpLaboral) {
		this.listaFiscalizaExpLaboral = listaFiscalizaExpLaboral;
	}

	/**
	 * Metodo que permite obtener listaFiscalizaFormacion.
	 * @return listaFiscalizaFormacion , tipo List<FiscalizaFormacion>.
	 */
	public List<FiscalizaFormacion> getListaFiscalizaFormacion() {
		return listaFiscalizaFormacion;
	}

	/**
	 * Permite actualizar listaFiscalizaFormacion.
	 * @param listaFiscalizaFormacion, tipo List<FiscalizaFormacion>.
	 */
	public void setListaFiscalizaFormacion(
			List<FiscalizaFormacion> listaFiscalizaFormacion) {
		this.listaFiscalizaFormacion = listaFiscalizaFormacion;
	}

	/**
	 * Metodo que permite obtener listaFiscalizaTrayecArbitral.
	 * @return listaFiscalizaTrayecArbitral , tipo List<FiscalizaTrayecArbitral>.
	 */
	public List<FiscalizaTrayecArbitral> getListaFiscalizaTrayecArbitral() {
		return listaFiscalizaTrayecArbitral;
	}

	/**
	 * Permite actualizar listaFiscalizaTrayecArbitral.
	 * @param listaFiscalizaTrayecArbitral, tipo List<FiscalizaTrayecArbitral>.
	 */
	public void setListaFiscalizaTrayecArbitral(
			List<FiscalizaTrayecArbitral> listaFiscalizaTrayecArbitral) {
		this.listaFiscalizaTrayecArbitral = listaFiscalizaTrayecArbitral;
	}

	/**
	 * Metodo que permite obtener listaFiscalizaCapacitacion.
	 * @return listaFiscalizaCapacitacion , tipo List<FiscalizaCapacitacion>.
	 */
	public List<FiscalizaCapacitacion> getListaFiscalizaCapacitacion() {
		return listaFiscalizaCapacitacion;
	}

	/**
	 * Permite actualizar listaFiscalizaCapacitacion.
	 * @param listaFiscalizaCapacitacion, tipo List<FiscalizaCapacitacion>.
	 */
	public void setListaFiscalizaCapacitacion(
			List<FiscalizaCapacitacion> listaFiscalizaCapacitacion) {
		this.listaFiscalizaCapacitacion = listaFiscalizaCapacitacion;
	}


}
